<?php

/**
 * transverse actions.
 *
 * @package    KC-INDICATEURS
 * @subpackage transverse
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class transverseActions extends sfActions
{
/**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    if ($this->getUser()->isAuthenticated())
    {
      $this->redirect('indicateur/index');
    }

    $login = $request->getParameter('login','');
    $pass = $request->getParameter('pass','');

    $acteur = Doctrine::getTable('Acteur')->findOneByLoginMantis($login);

    if ($acteur != null)
    {
      if ($acteur->authenticate($pass)){
        $this->getUser()->setAuthenticated(true);
        $this->getUser()->setAttribute('name', $acteur->getAcronyme());
        $this->getUser()->setAttribute('id', $acteur->getId());
        $projet_id = $acteur->getProjetPrincipal() ? $acteur->getProjetPrincipal()->getId() : null;
        $this->getUser()->setAttribute('projet_id',$projet_id);
        $this->redirect('indicateur/index');
      }
    }
    if ($login != '')
    {
      $this->message = 'Identification incorrecte';
    }
    else{
      $this->message = '';
    }

    $this->projets = Doctrine::getTable('Projet')->findAll();
  }

  /**
   * Désauthentifie l'utilisateur et retourne en page d'accueil (authentification)
   * @param sfWebRequest $request
   */
  public function executeLogout(sfWebRequest $request)
  {
    $this->getUser()->setAuthenticated(false);

    $attributes = array('name', 'projet_id');

    foreach($attributes as $attribute)
    {
      $this->getUser()->setAttribute($attribute,null);
    }

    $this->redirect('transverse/index');
  }

  /**
   *
   * @param sfWebRequest $request
   */
  public function executeChangeProjet(sfWebRequest $request)
  {
    $projet_id = $request->getParameter('projet_id');
    $projet = Doctrine::getTable('Projet')->find($projet_id);
    if ($this->getUser()->isAuthenticated())
    {
      $id = $this->getUser()->getAttribute('id');
      $acteur = Doctrine::getTable('Acteur')->find($id);
      if ($acteur){
        if ($projet == null || !$acteur->isLieAProjet($projet)){
          if ($acteur->getProjetPrincipal()){
            $projet_id = $acteur->getProjetPrincipal()->getId();
          }
          else{
            $projet_id = null;
          }
        }
      }
      else{
        $projet_id = null;
      }

      $this->getUser()->setAttribute('projet_id',$projet_id);
    }

    $this->redirect('indicateur/index');
  }


  /**
   *
   * @param sfWebRequest $request
   */
  public function executeAide(sfWebRequest $request)
  {

  }
}
